package com.five;

import com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType;

import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        //完成注册,登录
        /*业务：
         * 1：可以注册多个人
         * 2：需要验证用户名是否重复，如果重复，不能注册。
         *       1)怎么验证，2)注册用户放在数组中空的位置
         * 3：并用注册用户完成登录
         * */
        //存储用户的容器
        User[] users = new  User[5];

        //餐袋 :创建餐袋
        CatMenus catMenus = new CatMenus();

        //存储菜品的容器
        Menus[] menus = new Menus[5];


        Menus menus1 = new Menus();
        //menus1.id=(int)Math.floor(Math.random()*100);
        menus1.id=1;
        menus1.mName="炒土豆丝";
        menus1.mPrice=12.5;
        menus1.count=10;

        Menus menus2 = new Menus();
        menus2.id=2;
        menus2.mName="红烧肉";
        menus2.mPrice=25.4;
        menus2.count=10;

        Menus menus3 = new Menus();
        menus3.id=3;
        menus3.mName="西红柿炒鸡蛋";
        menus3.mPrice=10;
        menus3.count=10;

        menus[0]=menus1;
        menus[1]=menus2;
        menus[2]=menus3;


        boolean isFlag=true;
        while (isFlag){
            System.out.println("请选择您的操作：1：注册，2：登录，3：退出");
            Scanner scanner = new Scanner(System.in);
            int i = scanner.nextInt();
            switch (i){
                case 1:
                    boolean isK=true;
                    while (isK){
                        //注册;
                        //1:t提示用户注册
                        System.out.println("--开始注册--");
                        System.out.println("请输入用户名：");
                        String name = scanner.next();
                        System.out.println("请输入密码：");
                        String password = scanner.next();

                        //封装用户
                        User user = new User();
                        user.name=name;
                        user.password=password;

                        //2：验证用户名是否存在, false,true---->方法（带返回值，带参）
                        boolean b = checkName(name, users);
                        if(b){
                            //3：存用户---->方法（带返回值，带参）
                            boolean b1 = addUser(user, users);
                            if(b1){
                                System.out.println("注册成功...");
                                System.out.println("是否需要继续注册？（是，否）");
                                String next = scanner.next();
                                if(next.equals("否")){
                                    isK=false;
                                    System.out.println("退出注册...");
                                }
                            }else {
                                System.out.println("用已经满了，不能注册");
                            }
                        }else {
                            System.out.println("用户名已存在");
                        }
                    }
                    break;
                case 2:
                    //登录:
                    System.out.println("--开始登录--");
                    System.out.println("请输入用户名：");
                    String name = scanner.next();
                    System.out.println("请输入密码：");
                    String password = scanner.next();
                    boolean login = login( name, password , users);
                    if(login){
                        boolean isOk=true;
                       while (isOk){
                           System.out.println("请选择您需要的操作：1：点餐，2：打印餐袋，3:付款，4：查看订单，5：评价，6：退出");
                           int i1 = scanner.nextInt();
                           switch (i1){
                               case 1:
                                 //点餐
                                  //打印菜单
                                   boolean isF=true;
                                   while (isF){
                                       showMenus(menus);
                                       System.out.println("请选择您需要的菜品编号：");
                                       int mid = scanner.nextInt();
                                       //检验输入的菜品是否在菜单中
                                       boolean b= checkMenuById(mid, menus);
                                       if(b){
                                           //菜品存在菜单中
                                           //1:根据用户输入菜品编号，取出菜品
                                           Menus men = getMenuById(mid, menus);
                                           //2：验证菜品在不在餐袋中
                                           boolean b1 = checkCatMenu(mid, catMenus.menus);
                                           if(b1){
                                               //老菜
                                               addMenusCat(catMenus.menus,men,0);
                                           }else {
                                               //新菜
                                               addMenusCat(catMenus.menus,men,1);
                                           }
                                           System.out.println("是否继续点餐");
                                           String next = scanner.next();
                                           if(next.equals("否")){
                                               isF=false;
                                           }
                                       }else {
                                           System.out.println("输入错误，请重新输入");
                                       }
                                   }
                                   break;
                               case 2:
                                   break;
                               case 3:
                                   break;
                               case 4:
                                   break;
                               case 5:
                                   break;
                               case 6:
                                   isOk=false;
                                   break;
                           }
                       }

                    }else {
                        System.out.println("登录失败！");
                    }
                    break;
                case 3:
                    isFlag=false;
                    break;
            }
        }

    }

    //添加菜品
    public static void addMenusCat(Menus[] menus,Menus men,int type){
              if(type==0){
                  //老菜
                  for (int i = 0; i <menus.length; i++) {
                      if(menus[i] !=null && men.id==menus[i].id){
                          menus[i].sumCount++;
                          break;
                      }
                  }
              }else {
                  //新菜
                  for (int i = 0; i < menus.length; i++) {
                      if(menus[i] ==null){
                          menus[i]=men;
                          menus[i].sumCount++;
                      }
                  }
              }
    }

    //2：验证菜品在不在餐袋中
    public static  boolean  checkCatMenu(int id,Menus[] menus){
            for (int i = 0; i <menus.length ; i++) {
                if(menus[i] !=null && id==menus[i].id){
                     return true;
                }
            }
            return false;
    }


    //1:根据用户输入菜品编号，取出菜品
    public static Menus getMenuById(int id,Menus[] menus){
        for (int i = 0; i <menus.length ; i++) {
            if(menus[i] !=null && menus[i].id==id){
                //
                Menus menus1 = new Menus();
                menus1.id=menus[i].id;
                menus1.mName=menus[i].mName;
                menus1.mPrice=menus[i].mPrice;
                menus1.sumCount=menus[i].sumCount;
                menus1.count=menus[i].count;
                return menus1;
            }
        }
        return null;
    }



    //检验输入的菜品是否在菜单中
    public static boolean checkMenuById(int id,Menus[] menus){
        for (int i = 0; i <menus.length ; i++) {
             if(menus[i] !=null && menus[i].id==id){
                 return true;
             }
        }
        return false;
    }



    //打印菜单
    public static void showMenus(Menus[] menus){
        System.out.println("编号\t\t\t菜名\t\t\t价格\t\t\t库存");
        for (int i = 0; i <menus.length ; i++) {
            if(menus[i] !=null){
                System.out.println(menus[i].id+"\t\t\t"+menus[i].mName+"\t\t\t"+menus[i].mPrice+"\t\t\t"+menus[i].count);
            }
        }
    }


    //登录
    public static boolean login(String name,String password,User[] users){
        for (int i = 0; i <users.length ; i++) {
            if(users[i] !=null && users[i].name.equals(name) &&users[i].password.equals(password)){
                return  true;
            }
        }
        return false;
    }

    //存储用户
    public static boolean addUser(User user,User[] users){
        for (int i = 0; i <users.length ; i++) {
            if(users[i] ==null){
                users[i]=user;
                return  true;
            }
        }
        return false;
    }

    //验证用户名是否存在
    public static boolean checkName(String name,User[] users){
        for (int i = 0; i <users.length ; i++) {
               if(users[i] !=null && users[i].name.equals(name)){
                   return  false;
               }
        }
        return true;
    }

}
